\pagestyle{empty}
\cleardoublepage
%\pagestyle{fancy}
\chapter{Conclusão e trabalhos futuros}\label{cap6}

\section{Principais Contribuições}

Esse trabalho apresentou uma técnica \textit{a priori} de subdivisão de domínios bidimensionais para a geração paralela da malha. A técnica proposta é dita \textit{a priori} porque a malha de interface entre os subdomínios é gerada antes das suas malhas internas. Essa técnica gera novos domínios e permite abstrair a técnica de geração de malha aplicada aos subdomínios, podendo-se combinar, por exemplo, as técnicas de Delaunay e Avanço de Fronteira, dentre outras.

Ao final desse trabalho foram apresentados os resultados obtidos pela técnica proposta. Foi também mostrada a diferença nos resultados que as estruturas de dados utilizadas para particionar fazem, comparando a \textit{quadtree} com a BSP. Os resultados foram comparados com os resultados para os mesmos modelos no trabalho de \cite{bib:MFreitas13} que usa uma estratégia \textit{a posteriori}, pois essa técnica segue uma abordagem de particionamento diferente.

Uma desvantagem de utilizar uma \textit{quadtree} para particionar domínios é que os domínios criados nem sempre mantém a mesma proporção entre as cargas. Se for preciso subdividir um subdomínio, quatro novos serão criados e isso faz com que o balanceamento da carga fique prejudicado pelo excesso de partições criadas reduzindo assim o \textit{speed-up}. Utilizando BSP para particionamento, a quantidade de subdomínios criados é a mesma quantidade de processos disponíveis, evitando o excesso de tarefas e de comunicação.

A técnica aborda a subdivisão dos domínios e não a geração de malha propriamente dita. Apesar de qualquer algoritmo poder ser utilizado, em particular, um algoritmo de avanço de fronteira é utilizado para gerar malha e está descrito em \cite{bib:Miranda99} e \cite{bib:Cavalcante-Neto01}.

O trabalho proposto pode ser dividido basicamente em duas etapas. A primeira consiste em receber a lista de segmentos que compõem a fronteira de entrada e dividir o domínio definido por ela em partes que possam ser tratadas por novos domínios independentes. Todos essas partes, por sua vez, possuem a quantidade de carga aproximadamente equivalentes. A segunda etapa é a geração da malha em cada um dos novos domínios. Qualquer algoritmo de triangulação dado uma borda como entrada pode ser utilizado, podendo, inclusive, serem empregados algoritmos diferentes nos subdomínios. Além da triangulação, é necessário fazer a junção das diversas malhas geradas em uma só.

As principais contribuições deste trabalho são a apresentação de uma nova técnica de decomposição de domínios que apresentou bons resultados e a comparação da utilização da \textit{quadtree} com a \textit{binary space partitioning} (BSP) para auxiliar o particionamento, mostrando ao final que a BSP possui resultados melhores.


\section{Trabalhos Futuros}

A técnica aqui apresentada permite a utilização de múltiplas técnicas de geração de malha, podendo inclusive combinar-se diferentes algoritmos ao mesmo tempo. Alguns testes preliminares foram feitos usando o algoritmo de Delaunay de \cite{bib:Shewchuk96b} mas é necessário um estudo mais aprofundado. Viabilizando a perfeita execução do algoritmo de Delaunay será possível gerar malhas mistas e até mesmo comparar com o algoritmo de Avanço de Fronteira.

Este trabalho utiliza o modelo de paralelismo mestre/escravo, que é normalmente utilizado em aplicações que possuem mais tarefas que processos disponíveis. Quando se particiona o domínio por \textit{quadtree}, mais tarefas que processos são criados em geral, mas ao utilizar BSP para particionar, a quantidade de subdomínios será a mesma de processos. A estimativa de carga é bem precisa, fazendo os tempos de execução dos subdomínios criados pela BSP serem praticamente iguais. Isso cria um gargalo no processo mestre, pois ele irá receber praticamente todos os resultados da geração de malha dos subdomínios ao mesmo tempo. 

Uma solução para este problema é mudar o modelo de paralelismo fazendo com que cada processo seja responsável por gerar sua fronteira de interface e malha; a junção dos pedaços da malha é feita sempre em pares de processos que possuem subdomínios vizinhos, fazendo estas junções até que toda malha esteja completa. Mudar a forma de distribuição das tarefas vai melhorar bastante os resultados de \textit{speed-up} quando utilizar o particionamento baseado na BSP.

A geração de malhas em domínios com fraturas não foi testada, mas espera-se fazer uma versão deste trabalho que suporte modelos com fraturas existentes na fronteira de entrada. Nessas malhas, a superfície da fratura é representada como uma região de área nula formada por segmentos de borda geometricamente coincidentes, cujas normais têm sentidos opostos. Fraturas são muito importantes em vários tipos de simulações computacionais de problemas de engenharia.

Por fim, uma extensão natural é implementar uma versão tridimensional da técnica. Técnicas de decomposição contínua \textit{a priori} em geral não são facilmente implementadas pois precisam gerar novas fronteiras, criando assim segmentos de interface. Essa criação torna-se complicada pois para se obter uma decomposição totalmente automática é necessário que a técnica seja suficientemente robusta para procurar os melhores pontos de corte, levando em consideração a carga e a qualidade dos elementos que serão gerados ali posteriormente. Na versão tridimensional será necessário criar superfícies que se adaptem à geometria dos modelos de entrada, e isso não é algo trivial, necessitando de estudos mais aprofundados.